//
//  HMProgressView.swift
//  WeiBo
//
//  Created by apple on 16/7/6.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMProgressView: UIImageView {

    // 也需要定义属性
    var progress: CGFloat = 0 {
    
        didSet {
            
            loadingView.progress = progress
        }
        
    }
    
    // 第一步 -- 重写构造函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 第二步 -- 定义一个方法,来实现 视图的添加和布局
    private func setupUI(){
        
        addSubview(loadingView)
        
        // 一个视图如果没有给他frame,他不会创建
        loadingView.snp_makeConstraints { (make) -> Void in
//            make.center.equalTo(self.snp_center)
            make.edges.equalTo(self.snp_edges)
        }
     
    }
    
    // 第三步: 懒加载控件
//    private lazy var loadingView: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
     private lazy var loadingView: HMProgressCircleView = HMProgressCircleView()
    

}

class HMProgressCircleView: UIView {
    // 定义了一个进度
    var progress: CGFloat = 0 {
        
        didSet{
            // 面试的时候经常会问到的
            // 自定义绘图的时候,有进度的话,需要手动调用setNeedsDisplay
            setNeedsDisplay()
        }
        
    }
    
    override func drawRect(rect: CGRect) {
        
        /*
            中心点
            半径
            开始的弧度
            结束
            是否顺时针
        */
        
        let center = CGPointMake(rect.width * 0.5, rect.height * 0.5)
        
        let radius = min(rect.width, rect.height) * 0.5
        
        let startAngle = CGFloat(0)
        
        let endAngle = 2 * CGFloat(M_PI) * progress
        
        let path = UIBezierPath(arcCenter: center, radius: radius, startAngle: startAngle, endAngle: endAngle, clockwise: true)
        
        // 设置一下center
        path.addLineToPoint(center)
        
        // 设置一下颜色
        UIColor.redColor().setFill()
        
        
        // 关闭我们的绘画
        path.closePath()
        
        path.fill()
        
        
    }
    
}
